Graphical user interfaces (GUIs) are popular in a variety of computing applications and/or operating systems. A typical GUI provides visual feedback to the user of his or her actions (e.g., inputs, and responses thereto). There is a move underway to make more devices or other types of appliances seemingly “smarter” or more user friendly by introducing similar graphical interfaces and like capabilities. Thus, for example, a kiosk, automatic teller machines, microwave ovens, video cassette recorders (VCRs), cellular telephones, and the like are beginning to provide GUIs that are programmed to enrich the user's interactions with the device. This may include, for example, adding selectable icons, scrollable lists, and hierarchical pages.
More interestingly for this Background section, in certain instances, physical user interfaces, such as, e.g., knobs, buttons, switches, handles, and the like, can be graphically modeled and included within the graphical user interface as selectable/movable objects. Hence, a user can graphically open a closed drawer, turn up/down a volume control, or perhaps select a feature, product or service.
Causing such an action to occur typically requires the user to provide the requisite user inputs to the controlling GUI logic. This may include physically moving and/or activating an input device, such as, e.g., a mouse, a trackball or the like, which provides corresponding user input signals to the controlling GUI logic, directly or indirectly.
Another type of physical input device is a touch pad or touch screen. Touch screen are usually configured to allow the user to touch an exposed surface of a cathode ray tube (CRT), liquid crystal display (LCD), plasma display, or the like, through which the GUI environment and GUI objects are visible. Here, the user may touch the exposed surface with his or her finger or some other object, such as, e.g., a stylus. The touch screen includes a detection mechanism (e.g., an electrically detectable grid array) is configured to detect the point of contact on the exposed surface and to provide this positional information to the controlling GUI logic. Provided with this positional information, the GUI logic can determine which portion of the GUI interface and/or GUI object, the user is attempting to select, move, alter, or otherwise influence.
Touch screens are particularly useful and popular in appliances that have limited user input devices and/or display capabilities. For example, touch screens are popular in personal digital assistant (PDA) devices, cellular telephones, kiosks, etc. Unfortunately, when a GUI object is selected in a conventional touch screen GUI environment, the position of the pointing device, e.g., stylus, fingertip, etc. may not always be at or near the center or other preferred “grab point” of the selected object. For example, a user may select a slider portion of a modeled sliding control knob at a corner or along an edge. In the physical world, as opposed to the virtual world of the GUI, one would not typically miss a slider or other knob in this manner when attempting to move/activate it. Granted, sliders and certain other types of switches can be pushed from an edge, but this would only allow for movement in a particular direction.
Nevertheless, many conventional GUI environments model this unnatural capability, while others try to automatically correct the situation. Thus, for example, in some cases, an offset between the user input position and the GUI object is determined and then maintained throughout the movement/activation process. In other cases, the GUI object (e.g., the slider knob) is immediately relocated within the GUI environment in such a manner that it is “correctly” positioned in accord with the user's input.
While each of these implementations tends to work just fine, many users may find the maintained offset or the immediate correction less pleasing. Thus, there is a need for improved methods and arrangements that can provide for a more pleasing and in some cases a more realistic user interface capability.